home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 001 / pibt3sp1.arc / FASTCHNG.PAS < prev    next >
Pascal/Delphi Source File  |  1985-08-11  |  5KB  |  120 lines

  1. (*----------------------------------------------------------------------*)
  2. (*       Fast_Change_Params --- fast change of communications params.   *)
  3. (*----------------------------------------------------------------------*)
  4.  
  5. OVERLAY PROCEDURE Fast_Change_Params;
  6.  
  7. (*----------------------------------------------------------------------*)
  8. (*                                                                      *)
  9. (*     Procedure:  Fast_Change_Params                                   *)
  10. (*                                                                      *)
  11. (*     Purpose:    Fast change of communications params                 *)
  12. (*                                                                      *)
  13. (*     Calling Sequence:                                                *)
  14. (*                                                                      *)
  15. (*        Fast_Change_Params;                                           *)
  16. (*                                                                      *)
  17. (*                                                                      *)
  18. (*      Remarks:                                                        *)
  19. (*                                                                      *)
  20. (*         This routine is useful is making a fast switch between       *)
  21. (*         the parameter values needed by XMODEM and those required     *)
  22. (*         by the remote host.                                          *)
  23. (*                                                                      *)
  24. (*----------------------------------------------------------------------*)
  25.  
  26. CONST
  27.    Comm_Parities  : ARRAY[ 1 .. 6 ] OF CHAR    = ('E','N','O','E','N','O');
  28.    Comm_Data_Bits : ARRAY[ 1 .. 6 ] OF INTEGER = ( 7,  7,  7,  8,  8,  8 );
  29.    Baud_Rates:      ARRAY[ 1 .. 8 ] OF INTEGER
  30.                     = ( 110, 150, 300, 600, 1200, 2400, 4800, 9600 );
  31.  
  32. VAR
  33.    Comm_Parms_Menu : Menu_Type;
  34.    Baud_Menu       : Menu_Type;
  35.    Comm_Parms      : INTEGER;
  36.    I               : INTEGER;
  37.  
  38. BEGIN (* Fast_Change_Params *)
  39.  
  40.    Comm_Parms_Menu.Menu_Size    := 6;
  41.    Comm_Parms_Menu.Menu_Row     := 11;
  42.    Comm_Parms_Menu.Menu_Column  := 30;
  43.    Comm_Parms_Menu.Menu_Tcolor  := Menu_Text_Color;
  44.    Comm_Parms_Menu.Menu_Bcolor  := BackGround_Color;
  45.    Comm_Parms_Menu.Menu_Fcolor  := Menu_Frame_Color;
  46.    Comm_Parms_Menu.Menu_Width   := 0;
  47.    Comm_Parms_Menu.Menu_Height  := 0;
  48.  
  49.    Comm_Parms_Menu.Menu_Default := ( Data_Bits - 7 ) * 3 + POS( Parity, 'ENO' );
  50.  
  51.    FOR I := 1 TO 6 DO
  52.       WITH Comm_Parms_Menu.Menu_Entries[I] DO
  53.       BEGIN
  54.          Menu_Item_Row    := I;
  55.          Menu_Item_Column := 2;
  56.          CASE I OF
  57.             1:  Menu_Item_Text := 'a) Even parity, 7 bits, 1 stop';
  58.             2:  Menu_Item_Text := 'b) No parity,   7 bits, 1 stop';
  59.             3:  Menu_Item_Text := 'c) Odd parity,  7 bits, 1 stop';
  60.             4:  Menu_Item_Text := 'd) Even parity, 8 bits, 1 stop';
  61.             5:  Menu_Item_Text := 'e) No parity,   8 bits, 1 stop (Xmodem)';
  62.             6:  Menu_Item_Text := 'f) Odd parity,  8 bits, 1 stop';
  63.          END (* CASE *);
  64.       END;
  65.  
  66.    Comm_Parms_Menu.Menu_Title := 'Choose new communications parameters: ';
  67.  
  68.    Menu_Display_Choices( Comm_Parms_Menu );
  69.    Comm_Parms := Menu_Get_Choice( Comm_Parms_Menu , Erase_Menu );
  70.  
  71.    Parity    := Comm_Parities [ Comm_Parms ];
  72.    Data_Bits := Comm_Data_Bits[ Comm_Parms ];
  73.  
  74.                                    (* Get Baud Rate  *)
  75.    Baud_Menu.Menu_Size    := 8;
  76.    Baud_Menu.Menu_Row     := 11;
  77.    Baud_Menu.Menu_Column  := 30;
  78.    Baud_Menu.Menu_Tcolor  := Menu_Text_Color;
  79.    Baud_Menu.Menu_Bcolor  := BackGround_Color;
  80.    Baud_Menu.Menu_Fcolor  := Menu_Frame_Color;
  81.    Baud_Menu.Menu_Width   := 0;
  82.    Baud_Menu.Menu_Height  := 0;
  83.  
  84.    CASE Baud_Rate Of
  85.       110 :  Baud_Menu.Menu_Default := 1;
  86.       150 :  Baud_Menu.Menu_Default := 2;
  87.       300 :  Baud_Menu.Menu_Default := 3;
  88.       600 :  Baud_Menu.Menu_Default := 4;
  89.       1200:  Baud_Menu.Menu_Default := 5;
  90.       2400:  Baud_Menu.Menu_Default := 6;
  91.       4800:  Baud_Menu.Menu_Default := 7;
  92.       9600:  Baud_Menu.Menu_Default := 8;
  93.    END (* CASE *);
  94.  
  95.    FOR I := 1 to 8 DO
  96.       With Baud_Menu.Menu_Entries[I] DO
  97.       BEGIN
  98.          Menu_Item_Row    := I;
  99.          Menu_Item_Column := 2;
  100.          CASE I Of
  101.             1:  Menu_Item_Text:= 'a) 110';
  102.             2:  Menu_Item_Text:= 'b) 150';
  103.             3:  Menu_Item_Text:= 'c) 300';
  104.             4:  Menu_Item_Text:= 'd) 600';
  105.             5:  Menu_Item_Text:= 'e) 1200';
  106.             6:  Menu_Item_Text:= 'f) 2400';
  107.             7:  Menu_Item_Text:= 'g) 4800';
  108.             8:  Menu_Item_Text:= 'h) 9600';
  109.          END (* CASE *);
  110.       END;
  111.  
  112.    Baud_Menu.Menu_Title := 'Choose Baud Rate: ';
  113.  
  114.    Menu_Display_Choices( Baud_Menu );
  115.    Baud_Rate := Baud_Rates[ Menu_Get_Choice( Baud_Menu , Erase_Menu ) ];
  116.  
  117.    Async_Reset_Port( Comm_Port, Baud_Rate, Parity, Data_Bits, 1 );
  118.  
  119. END   (* Fast_Change_Params *);
  120.